package com.utils;

import java.util.HashMap;
import java.util.Map;

public class MySqlJdbcType {

	public final static String sqlToJava(String sqlType) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("bigint",      "Long");
		map.put("binary",      "Byte[]");
		map.put("bit",         "Boolean");
		map.put("blob",        "Blob");
		map.put("bool",        "Boolean");
		map.put("boolean",     "Boolean");
		map.put("char",        "String");
		map.put("date",        "Date");
		map.put("datetime",    "Date");
		map.put("decimal",     "BigDecimal");
		map.put("double",      "Double");
		map.put("enum",        "String");
		map.put("float",       "Float");
		map.put("int",         "Integer");
		map.put("json",        "String");
		map.put("longblob",    "Byte[]");
		map.put("longtext",    "String");
		map.put("mediumblob",  "byte");
		map.put("mediumint",   "Integer");
		map.put("mediumtext",  "String");
		map.put("numeric",     "BigDecimal");
		map.put("real",        "Short");
		map.put("set",         "String");
		map.put("smallint",    "Integer");
		map.put("text",        "String");
		map.put("time",        "Timestamp");
		map.put("timestamp",   "Timestamp");
		map.put("tinyblob",    "Byte[]");
		map.put("tinyint",     "Integer");
		map.put("tinytext",    "String");
		map.put("varbinary",   "Byte[]");
		map.put("varchar",     "String");
		map.put("year",        "Date");
		String val = map.get(sqlType);
		if (StrUtil.isEmpty(val)) {
			val = "String";
		}
		return val;
	}

	public final static String sqlToJdbc(String sqlType) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("bigint",      "BIGINT");
		map.put("binary",      "BINARY");
		map.put("bit",         "BIT");
		map.put("blob",        "Blob");
		map.put("bool",        "BIT");
		map.put("boolean",     "BIT");
		map.put("char",        "VARCHAR");
		map.put("date",        "TIMESTAMP");
		map.put("datetime",    "TIMESTAMP");
		map.put("decimal",     "DECIMAL");
		map.put("double",      "DOUBLE");
		map.put("enum",        "VARCHAR");
		map.put("float",       "FLOAT");
		map.put("int",         "INTEGER");
		map.put("json",        "VARCHAR");
		map.put("longblob",    "BINARY");
		map.put("longtext",    "VARCHAR");
		map.put("mediumblob",  "TINYINT");
		map.put("mediumint",   "INTEGER");
		map.put("mediumtext",  "VARCHAR");
		map.put("numeric",     "NUMERIC");
		map.put("real",        "REAL");
		map.put("set",         "VARCHAR");
		map.put("smallint",    "INTEGER");
		map.put("text",        "VARCHAR");
		map.put("time",        "TIMESTAMP");
		map.put("timestamp",   "TIMESTAMP");
		map.put("tinyblob",    "BINARY");
		map.put("tinyint",     "BIT");
		map.put("tinytext",    "VARCHAR");
		map.put("varbinary",   "VARBINARY");
		map.put("varchar",     "VARCHAR");
		map.put("year",        "TIMESTAMP");
		String val = map.get(sqlType);
		if (StrUtil.isEmpty(val)) {
			val = "VARCHAR";
		}
		return val;
	}

	public static String validImport(String javaType) {
		switch (javaType) {
		case "Date":
			return "java.util.Date";
		case "BigDecimal":
			return "java.math.BigDecimal";
		case "Timestamp":
			return "java.sql.Timestamp";
		default:
			return null;
		}
	}

	public static boolean isNum(String sqlType) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("bigint",      "Long");
		map.put("decimal",     "BigDecimal");
		map.put("double",      "Double");
		map.put("float",       "Float");
		map.put("int",         "int");
		map.put("mediumblob",  "byte");
		map.put("mediumint",   "Integer");
		map.put("numeric",     "BigDecimal");
		map.put("real",        "Short");
		map.put("smallint",    "Integer");
		map.put("tinyint",     "Integer");
		String val = map.get(sqlType);
		if (StrUtil.isEmpty(val)) {
			return false;
		}
		return true;
	}
}
